《高性能網(wǎng)站建設(shè)指南》閱讀筆記_規(guī)則13- 配置ETag
發(fā)布時間:2013-11-22 瀏覽:394打印字號:大中小
ETag:實體標(biāo)簽,是web服務(wù)器和瀏覽器用于確認(rèn)緩存組件的有效性的一種機(jī)制。是唯一標(biāo)識了一個組件的一個特定版本的字符串.IIS上的ETag格式是Filetimestamp:ChangeNumber即;時間戳和跟蹤IIS配置變化的計數(shù)器組成的字符串。
工作機(jī)制:
前面提到過,檢測組件是否有效時,是通過Web服務(wù)器與客戶端緩存的組件進(jìn)行匹配的。有兩種方式:
--比較最新修改日期
原始服務(wù)器通過的Last-Modified響應(yīng)頭來返回組建的最新修改日期,瀏覽器通過If-Modefied-since進(jìn)行比較判斷,如果匹配則返回304(not Modefied),避免了200請求
-- 比較ETag實體標(biāo)簽
服務(wù)器傳遞客戶端組件一個ETag,如:
服務(wù)器發(fā)送ETag:"10c24bc-4ab-457e1c1f"
此后,如果瀏覽器驗證該組件,則會使用If-None-Match頭將ETag傳回原始服務(wù)器,如:
瀏覽器發(fā)送If-None-Match:"10c24bc-4ab-457e1c1f"
如果相同,則服務(wù)器返回304 Not Modified
如果不相同,則服務(wù)器重新向瀏覽器發(fā)送該組件。
如果一個網(wǎng)站有多臺服務(wù)器,那么,對于完全相同的組件,從一臺服務(wù)器到另一臺服務(wù)器,IIS產(chǎn)生的ETag是不會匹配的。就是說如果有10臺服務(wù)器,用戶得到正確304響應(yīng)的幾率只有10%,其余的90%都會得到200響應(yīng)并下載所有的數(shù)據(jù),
需要注意的是:ETag的服務(wù)器返回(If-None-Match)比最新修改日期的返回(If-Modified-Since)具有更高的優(yōu)先級。如果同時存在,則會禁止返回304 Not Modified。
建議:
ETag只用在單個服務(wù)器的網(wǎng)站上,在多服務(wù)器的網(wǎng)站上,可以修改ETag格式(如:IIS中實現(xiàn)從ETag中移除ChangeNumber,只留時間戳),但這樣和Last-Modified頭是等效的。所以最好將ETag完全移除,已避免組件的重復(fù)下載。
如何在IIS中移除ETag,參考:
http://support.microsoft.com/?id=922733
http://support.microsoft.com/?id=922703


